button: Handle :checked in gtktogglebutton.c
authorBenjamin Otte <otte@redhat.com>
Fri, 15 Aug 2014 14:58:39 +0000 (16:58 +0200)
committerBenjamin Otte <otte@redhat.com>
Sat, 16 Aug 2014 14:34:15 +0000 (16:34 +0200)
Don't try to handle it elsewhere.

gtk/gtkcheckbutton.c
gtk/gtkradiobutton.c
gtk/gtktogglebutton.c

index 89ce961d1ea672772de8622f19051544b74de1db..1221200b8346275b4d8db71168c64007049fca1e 100644 (file)
@@ -561,15 +561,11 @@ gtk_real_check_button_draw_indicator (GtkCheckButton *check_button,
 
   state &= ~(GTK_STATE_FLAG_INCONSISTENT |
              GTK_STATE_FLAG_ACTIVE |
-             GTK_STATE_FLAG_CHECKED |
              GTK_STATE_FLAG_PRELIGHT);
 
   if (gtk_toggle_button_get_inconsistent (toggle_button))
     state |= GTK_STATE_FLAG_INCONSISTENT;
   
-  if (gtk_toggle_button_get_active (toggle_button))
-    state |= GTK_STATE_FLAG_CHECKED;
-
   if (button->priv->activate_timeout || (button->priv->button_down && button->priv->in_button))
     state |= GTK_STATE_FLAG_ACTIVE;
 
index 131348a939f7db0466b5b0b65289af151d82bc1e..e4a01a59c97e74e3bd32a5a391ce9ef666c01d1e 100644 (file)
@@ -209,8 +209,6 @@ gtk_radio_button_init (GtkRadioButton *radio_button)
   _gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
 
   priv->group = g_slist_prepend (NULL, radio_button);
-
-  gtk_widget_set_state_flags (GTK_WIDGET (radio_button), GTK_STATE_FLAG_CHECKED, TRUE);
 }
 
 static void
@@ -815,11 +813,6 @@ gtk_radio_button_clicked (GtkButton *button)
 
   if (toggled)
     {
-      if (gtk_toggle_button_get_active (toggle_button))
-        gtk_widget_set_state_flags (GTK_WIDGET (button), GTK_STATE_FLAG_CHECKED, FALSE);
-      else
-        gtk_widget_unset_state_flags (GTK_WIDGET (button), GTK_STATE_FLAG_CHECKED);
-
       gtk_toggle_button_toggled (toggle_button);
 
       g_object_notify (G_OBJECT (toggle_button), "active");
@@ -866,15 +859,11 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button,
 
   state &= ~(GTK_STATE_FLAG_INCONSISTENT |
              GTK_STATE_FLAG_ACTIVE |
-             GTK_STATE_FLAG_CHECKED |
              GTK_STATE_FLAG_PRELIGHT);
 
   if (gtk_toggle_button_get_inconsistent (toggle_button))
     state |= GTK_STATE_FLAG_INCONSISTENT;
   
-  if (gtk_toggle_button_get_active (toggle_button))
-    state |= GTK_STATE_FLAG_CHECKED;
-
   if (button->priv->activate_timeout ||
       (button->priv->button_down && button->priv->in_button))
     state |= GTK_STATE_FLAG_ACTIVE;
index cca85e9fbb350a770dbbec00c77808c83cfd834e..ba97368bdd1a0b303e08a5313439d148ac556be0 100644 (file)
@@ -487,6 +487,12 @@ _gtk_toggle_button_set_active (GtkToggleButton *toggle_button,
                                gboolean         is_active)
 {
   toggle_button->priv->active = is_active;
+
+  if (is_active)
+    gtk_widget_set_state_flags (GTK_WIDGET (toggle_button), GTK_STATE_FLAG_CHECKED, FALSE);
+  else
+    gtk_widget_unset_state_flags (GTK_WIDGET (toggle_button), GTK_STATE_FLAG_CHECKED);
+
 }
 
 /**
@@ -624,7 +630,7 @@ gtk_toggle_button_clicked (GtkButton *button)
   GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button);
   GtkToggleButtonPrivate *priv = toggle_button->priv;
 
-  priv->active = !priv->active;
+  _gtk_toggle_button_set_active (toggle_button, !priv->active);
 
   gtk_toggle_button_toggled (toggle_button);
 
@@ -653,15 +659,11 @@ gtk_toggle_button_update_state (GtkButton *button)
   new_state = gtk_widget_get_state_flags (GTK_WIDGET (button)) &
     ~(GTK_STATE_FLAG_INCONSISTENT |
       GTK_STATE_FLAG_PRELIGHT |
-      GTK_STATE_FLAG_CHECKED |
       GTK_STATE_FLAG_ACTIVE);
 
   if (priv->inconsistent)
     new_state |= GTK_STATE_FLAG_INCONSISTENT;
   
-  if (priv->active)
-    new_state |= GTK_STATE_FLAG_CHECKED;
-
   if (button->priv->in_button && button->priv->button_down)
     new_state |= GTK_STATE_FLAG_ACTIVE;